﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FONCREAGROINTEGRAL.Models;

namespace FONCREAGROINTEGRAL.Controllers
{
    public class costosistemadepensionesController : Controller
    {
        public SistIntFoncreagroEntities entidades = new SistIntFoncreagroEntities();
        //
        // GET: /costosistemadepensiones/

        public ActionResult Index()
        {
            int start = Convert.ToInt32(Request.QueryString["start"]);
            int limit = Convert.ToInt32(Request.QueryString["limit"]);

            var query = entidades.COSTOSISTEMADEPENSIONES;

            var result = (from csp in query.OrderByDescending(csp => csp.idejerciciomes).Skip(start).Take(limit).ToList()
                          join sp in entidades.SISTEMADEPENSIONES on csp.IdSistemaPensiones equals sp.IdSistemaPensiones
                          join em in entidades.EJERCICIOMES on csp.idejerciciomes equals em.idejerciciomes
                          join ea in entidades.EJERCICIOs on em.IdEjercicio equals ea.IdEjercicio
                          select new
                          {
                              Id = csp.idcostosistemadepensiones,
                              SistemaPension = sp.NombreCorto,
                              IdSistemaPensiones = csp.IdSistemaPensiones,
                              Fondo = csp.fondo,
                              Comision = csp.comision,
                              ComisionMixta = csp.comisionmixta,
                              Seguro = csp.seguro,
                              TopeSeguro = csp.topeseguro,
                              Mes =Convert.ToString(em.idejerciciomes)+ " Periodo: " + Convert.ToString(ea.Anio) + " -- Mes: " + mesencadena(Convert.ToInt32(em.mes)),
                              Editable = csp.editable,

                          }).ToList().OrderBy(x => x.SistemaPension);

            return Json(new { grid= result,total = query.Count()},JsonRequestBehavior.AllowGet);
        }

        public string mesencadena(int id)
        {
            var mes = "";
            switch (id)
            {
                case 1: mes = "Enero"; break;
                case 2: mes = "Febrero"; break;
                case 3: mes = "Marzo"; break;
                case 4: mes = "Abril"; break;
                case 5: mes = "Mayo"; break;
                case 6: mes = "Junio"; break;
                case 7: mes = "Julio"; break;
                case 8: mes = "Agosto"; break;
                case 9: mes = "Setiembre"; break;
                case 10: mes = "Octubre"; break;
                case 11: mes = "Noviembre"; break;
                case 12: mes = "Diciembre"; break;

            }
            return mes;
        }

       
        public ActionResult Actualizar(int id)
        {
            string fondo = Request.Params["fondo"];
            decimal porcentajeDecimal = decimal.Parse(fondo.Replace(".", ","));
            string comision = Request.Params["comision"];
            decimal comisionDecimal = decimal.Parse(comision.Replace(".", ","));
            string comisionmixta = Request.Params["comisionmixta"];
            decimal comisionmixtaDecimal = decimal.Parse(comisionmixta.Replace(".", ","));
            string topeseguro = Request.Params["topeseguro"];
            decimal topeseguroDecimal = decimal.Parse(topeseguro.Replace(".", ","));
            string seguro = Request.Params["seguro"];
            decimal seguroDecimal = decimal.Parse(seguro.Replace(".", ","));
            var eccpersona = entidades.COSTOSISTEMADEPENSIONES.Single(p => p.idcostosistemadepensiones == id);
            try
            {
                eccpersona.fondo = porcentajeDecimal;
                eccpersona.comision = comisionDecimal;
                eccpersona.comisionmixta = comisionmixtaDecimal;
                eccpersona.topeseguro = topeseguroDecimal;
                eccpersona.seguro = topeseguroDecimal;
                TryUpdateModel(eccpersona);
                entidades.SaveChanges();
                return Content("OK");
            }
            catch 
            {
                return Content("ERROR");
            }
            //return View();
        }
        //
        // GET: /costosistemadepensiones/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /costosistemadepensiones/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /costosistemadepensiones/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection, COSTOSISTEMADEPENSIONE obj)
        {
            string strResponse = null;
            try
            {
                
                //costosistemadepensiones.idcostosistemadepensiones;
                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {
                    var crg = new COSTOSISTEMADEPENSIONE();
                    //TryUpdateModel(crg, collection.ToValueProvider());
                   entidades.SaveCostosistemadepensiones(obj.IdSistemaPensiones.Value, Convert.ToDecimal(obj.fondo), Convert.ToDecimal(obj.comision), Convert.ToDecimal(obj.seguro), Convert.ToDecimal(obj.topeseguro), Convert.ToDecimal(obj.comisionmixta));
                    //entidades.SaveChanges();
                    strResponse = "{success: true,msg:'Registro Creado Correctamente'}";
                    return Content(strResponse);
                    
                }
                strResponse = "{success: false,msg:'Fallo en la Creación'}";
                return Content(strResponse);
            }
            catch(Exception e)
            {
                strResponse = "{success: false,msg:'"+e.Message+"'}";
                return Content(strResponse);
            }
        }
        
        //
        // GET: /costosistemadepensiones/Edit/5
 
        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /costosistemadepensiones/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /costosistemadepensiones/Delete/5
 
       
        //
        // POST: /costosistemadepensiones/Delete/5

        //[HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            string strResponse = null;
            var dcostosistemadepensiones = entidades.COSTOSISTEMADEPENSIONES.Single(p => p.idcostosistemadepensiones == id);
            try
            {
                // TODO: Add delete logic here
                if (dcostosistemadepensiones != null)
                {
                    entidades.DeleteObject(dcostosistemadepensiones);
                    entidades.SaveChanges();
                    return Content("OK");
                    //return HttpNotFound();
                }
                return Content("Error");
            }
            catch (Exception e)
            {
                strResponse = "{success: false,msg:'" + e.Message + "'}";
                return Content(strResponse);
            }
        }
    }
}
